/**
 * JSON 转换工具类
 */
export class JSONUtils {
    /**
     * 安全解析 JSON 字符串
     *
     * @param jsonString JSON 字符串
     * @returns 解析后的对象或 null
     */
    static safeParse (jsonString: string): any | null {
        try {
            return JSON.parse(jsonString);
        } catch (error) {
            console.error('JSON解析失败:', error);
            return null;
        }
    }

    /**
     * 将 JSON 字符串转换为指定类型
     *
     * @param jsonString JSON 字符串
     * @returns 指定类型对象或null
     */
    static parseAs<T> (jsonString: string): T | null {
        return this.safeParse(jsonString) as T | null;
    }

    /**
     * 将 JSON 字符串转换为指定类型数组
     * @param jsonString JSON 字符串
     * @returns 指定类型数组（不保证每个元素都符合类型）
     */
    static parseAsArray<T> (jsonString: string): T[] {
        const parsed = this.safeParse(jsonString);
        return Array.isArray(parsed) ? parsed as T[] : [];
    }
}
